Apache Commons Collections লাইব্রেরি একাধিক বিশেষ ধরনের ডেটা স্ট্রাকচার সরবরাহ করে, যেগুলি বিশেষ পরিস্থিতিতে কাজ করার জন্য তৈরি করা হয়। এই ডেটা স্ট্রাকচারগুলির মধ্যে BoundedBuffer
, CircularFifoBuffer
, এবং UnboundedFifoBuffer
উল্লেখযোগ্য। এগুলি মূলত FIFO (First-In, First-Out) পদ্ধতিতে কাজ করে এবং এগুলোর ব্যবহারের ক্ষেত্রে আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী বাউন্ডেড (সীমাবদ্ধ) অথবা আনবাউন্ডেড (সীমাহীন) বাফার প্রয়োজন হতে পারে।
BoundedBuffer
একটি বাফার যা একটি নির্দিষ্ট আকারে সীমাবদ্ধ। এর মানে হল যে এটি একটি নির্দিষ্ট সীমা নির্ধারণ করে এবং যখন বাফার পূর্ণ হয়ে যায়, তখন নতুন উপাদান প্রবেশ করতে গেলে পুরনো উপাদানগুলো সরিয়ে ফেলা হয়। এটি সাধারণত producer-consumer প্যাটার্নে ব্যবহৃত হয় যেখানে একটি প্রোডিউসার (producer) উপাদান প্রদান করে এবং কনজিউমার (consumer) সেগুলি গ্রহণ করে।
import org.apache.commons.collections4.buffer.BoundedBuffer;
import org.apache.commons.collections4.buffer.CircularFifoBuffer;
public class BoundedBufferExample {
public static void main(String[] args) {
// Create a BoundedBuffer of size 3
BoundedBuffer<String> buffer = new CircularFifoBuffer<>(3);
// Add elements
buffer.add("apple");
buffer.add("banana");
buffer.add("orange");
// At this point, the buffer is full. Adding a new element will remove the oldest element
buffer.add("grape");
// Print the buffer contents
System.out.println("Buffer Contents: " + buffer);
}
}
Buffer Contents: [banana, orange, grape]
BoundedBuffer
এর আকার ৩ নির্ধারণ করা হয়েছে, এবং এর মধ্যে সর্বোচ্চ ৩টি উপাদান থাকতে পারে।grape
যোগ করা হয়, তখন apple
সরিয়ে ফেলা হয়, কারণ বাফার পূর্ণ হয়ে গেছে।CircularFifoBuffer
একটি বিশেষ ধরনের বাফার যা একটি সীমিত আকারে উপাদান ধারণ করে এবং FIFO (First-In, First-Out) পদ্ধতিতে কাজ করে। যখন বাফার পূর্ণ হয় এবং নতুন উপাদান যোগ করা হয়, তখন প্রথম যোগ করা উপাদানটি (oldest element) সরিয়ে ফেলা হয়। এটি একটি বাউন্ডেড বাফার, যেখানে ডেটা একটি circular queue এর মতো সঞ্চালিত হয়।
import org.apache.commons.collections4.buffer.CircularFifoBuffer;
public class CircularFifoBufferExample {
public static void main(String[] args) {
// Create a CircularFifoBuffer of size 3
CircularFifoBuffer<String> buffer = new CircularFifoBuffer<>(3);
// Add elements
buffer.add("apple");
buffer.add("banana");
buffer.add("orange");
// At this point, the buffer is full. Adding a new element will remove the oldest element
buffer.add("grape");
// Print the buffer contents
System.out.println("CircularFifoBuffer Contents: " + buffer);
}
}
CircularFifoBuffer Contents: [banana, orange, grape]
CircularFifoBuffer
এর আকার ৩ নির্ধারণ করা হয়েছে এবং এতে সর্বোচ্চ ৩টি উপাদান থাকতে পারে।grape
যোগ করা হয়, তখন apple
সরিয়ে ফেলা হয়, কারণ এটি বাফারের সবচেয়ে পুরনো উপাদান।UnboundedFifoBuffer
একটি FIFO (First-In, First-Out) বাফার যা কোনও আকারের সীমা ছাড়াই উপাদান ধারণ করতে পারে। এর মানে হল যে এটি কোনও নির্দিষ্ট সীমার মধ্যে সীমাবদ্ধ নয় এবং ইনপুট হিসাবে যতটুকু ডেটা আসে তা সরাসরি গ্রহণ করে।
import org.apache.commons.collections4.buffer.UnboundedFifoBuffer;
public class UnboundedFifoBufferExample {
public static void main(String[] args) {
// Create an UnboundedFifoBuffer
UnboundedFifoBuffer<String> buffer = new UnboundedFifoBuffer<>();
// Add elements
buffer.add("apple");
buffer.add("banana");
buffer.add("orange");
// Adding more elements, no size limit
buffer.add("grape");
buffer.add("kiwi");
// Print the buffer contents
System.out.println("UnboundedFifoBuffer Contents: " + buffer);
}
}
UnboundedFifoBuffer Contents: [apple, banana, orange, grape, kiwi]
UnboundedFifoBuffer
আকারের কোনও সীমা ছাড়াই উপাদান ধারণ করতে পারে, এবং এটি FIFO পদ্ধতিতে কাজ করে।Feature | BoundedBuffer | CircularFifoBuffer | UnboundedFifoBuffer |
---|---|---|---|
Size Limit | Fixed size (bounded) | Fixed size (bounded) | No size limit (unbounded) |
Data Removal | Removes the oldest element when full | Removes the oldest element when full | No removal needed, grows dynamically |
FIFO | Yes, maintains first-in, first-out order | Yes, maintains first-in, first-out order | Yes, maintains first-in, first-out order |
Usage | Useful for fixed-size data buffer in producer-consumer models | Useful for scenarios where data is cyclic and old data is replaced | Useful for scenarios where the data buffer is unlimited |
Memory | Limited memory usage based on fixed size | Fixed memory usage based on buffer size | Dynamic memory usage based on data volume |
BoundedBuffer, CircularFifoBuffer, এবং UnboundedFifoBuffer হল FIFO (First-In, First-Out) বাফারগুলির বিভিন্ন ধরনের বাস্তবায়ন যা Apache Commons Collections লাইব্রেরি সরবরাহ করে।
এই বাফারগুলির মধ্যে পার্থক্য বুঝে আপনি আপনার প্রজেক্টের প্রয়োজন অনুযায়ী উপযুক্ত বাফার নির্বাচন করতে পারবেন।
common.read_more